package com.fxw.libray;

import android.content.Context;

import com.google.gson.Gson;
import com.zhy.http.okhttp.OkHttpUtils;
import com.zhy.http.okhttp.callback.StringCallback;

import java.util.Map;

/**
 * @author xianwen.fu
 * @version v1.0
 * @Title
 * @Description:
 * @Date 2016/5/17 0017 下午 4:26
 */
public class HttpHelper {
    private static HttpHelper mInstance;
    private static Context mContext;

    public static HttpHelper getInstance(Context context) {
        mContext = context;
        if (mInstance == null) {
            synchronized (HttpHelper.class) {
                if (mInstance == null) {
                    mInstance = new HttpHelper();
                }
            }
        }
        return mInstance;
    }

    public void http(int state, String url, Map parmsMap, StringCallback callBack) {
        switch (state) {
            case 0:
                OkHttpUtils.get().url(url).params(parmsMap).tag(mContext).build().execute(callBack);
                break;
            case 1:
                OkHttpUtils.post().url(url).params(parmsMap).tag(mContext).build().execute(callBack);
                break;
            case 2:
                OkHttpUtils.put().url(url).requestBody(AppContext.mGson.toJson(parmsMap)).tag(mContext).build().execute(callBack);
                break;
            case 3:
                OkHttpUtils.put().url(url).requestBody(AppContext.mGson.toJson(parmsMap)).tag(mContext).build().execute(callBack);
        }
    }

    public void http(int state, String url, Map parmsMap,Map fileMap, StringCallback callBack) {
        switch (state) {
            case 1:
                OkHttpUtils.post().url(url).addFiles("",fileMap).params(parmsMap).tag(mContext).build().execute(callBack);
                break;
            case 2:
                OkHttpUtils.put().url(url).requestBody(AppContext.mGson.toJson(parmsMap)).tag(mContext).build().execute(callBack);
                break;

        }
    }

    /**
     * 取消
     */
    public void removeHttp() {
        OkHttpUtils.getInstance().cancelTag(mContext);
    }


//    /**
//     * @param state       0 get,1 post,2put,3delete
//     * @param map         参数
//     * @param clazz       实体对象
//     * @param requestCode 请求code
//     * @param isShow      是否显示弹框
//     */
//    protected void httpRequest(int state, Map map, final Class<? extends BaseBean> clazz, final int requestCode, final boolean isShow) {
//        HttpHelper.getInstance(mContext).http(state, Httpurl.GETIPINFO, map, new StringCallback() {
//
//            @Override
//            public void onError(Call call, Exception e) {
//                respOnError(call, e, requestCode);
//            }
//
//            @Override
//            public void onResponse(String response) {
//                LogUtils.LOGI("请求结果：", response);
//                BaseBean mBaseBean = new Gson().fromJson(response, clazz);
//                respOnSuccess(requestCode, mBaseBean);
//            }
//
//            @Override
//            public void onAfter() {
//                super.onAfter();
//                respOnAfter(requestCode);
//            }
//
//            @Override
//            public void onBefore(Request request) {
//                super.onBefore(request);
//                respOnBefore(requestCode, isShow);
//            }
//
//            @Override
//            public void inProgress(float progress) {
//                super.inProgress(progress);
//                respInProgress(requestCode, progress);
//            }
//
//        });
//    }
//
//    /**
//     * @param state       0 get,1 post,2put,3delete
//     * @param map         参数
//     * @param clazz       实体对象
//     * @param requestCode 请求code
//     * @param isShow      是否显示弹框
//     */
//    protected void httpRequest(int state, Map map, Map fileMap, final Class<? extends BaseBean> clazz, final int requestCode, final boolean isShow) {
//
//    }
//
//    protected void respOnError(Call call, Exception e, int requestCode) {
//        ToastUtils.showToast(mContext, e.getMessage());
//    }
//
//    protected void respOnBefore(int requestCode, final boolean isShow) {
//        if (!mContext.isFinishing() && !mProgressDialog.isShowing() && isShow)
//            mProgressDialog.show();
//    }
//
//    protected void respOnAfter(int requestCode) {
//        if (!mContext.isFinishing() && mProgressDialog.isShowing())
//            mProgressDialog.dismiss();
//    }
//
//    protected void respInProgress(int requestCode, float progress) {
//
//    }
//
//    protected void respOnSuccess(int requestCode, BaseBean response) {
//
//    }
}
